package com.aleyn.router.core

import com.aleyn.router.util.wLog
import java.util.concurrent.ConcurrentHashMap

/**
 * @author: Aleyn
 * @date: 2023/7/17 16:15
 *
 * 路由表映射容器。
 * 继承自 [ConcurrentHashMap] 以确保线程安全。
 * 重写了 `put` 方法，用于在添加重复路由键时发出警告，防止意外覆盖。
 */
class LRouterMap : ConcurrentHashMap<String, RouteMeta?>() {

    /**
     * 向路由表中添加一个新的路由。
     * 如果 `key` 已存在，会打印一条警告日志，因为一个路径不应该对应多个页面。
     *
     * @param key 路由路径生成的键。
     * @param value 路由元数据 [RouteMeta]。
     * @return 返回与 `key` 关联的前一个值，如果没有则返回 `null`。
     */
    override fun put(key: String, value: RouteMeta): RouteMeta? {
        if (containsKey(key)) {
            "LRouter: 一个 Key 不应该对应多个页面，这将会覆盖已有的页面".wLog()
        }
        return super.put(key, value)
    }

}